#ifndef H265_DEMUXER_
#define H265_DEMUXER_
#include <iostream>
#include <string.h>
#include "rtp_demuxer.h"

// H265 NALU头部数据结构
struct H265NaluHeader {
  uint16_t layer_hi : 1;
  uint16_t type : 6; // NALU类型
  uint16_t f : 1;   //  标志位
  uint16_t tid : 3; //  类型标识符
  uint16_t layer_low : 5; 
};
// 分片数据结构
struct H265FUHeader {
  uint8_t type : 6; // NALU类型
  uint8_t e : 1;   // 结束标志
  uint8_t s : 1;   // 开始标志
};

// H265解复用器
class H265Demuxer : public RTPDemuxer {
public:
    void InputData(const uint8_t* data, size_t size) override;
private:
    uint8_t buffer_[4 * 1024 * 1024];  // 用于存储拼接后的数据
    bool find_start_ = false;  // 是否已经找到一个分片的起始部分
    size_t pos_buffer_ = 0;    // 当前缓冲区的数据位置
};




#endif